{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "np.random.seed(42)\n",
    "x = np.random.uniform(-3.0, 3.0, 100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x + 3 + np.random.normal(0, 1, 100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0xd331c3ec88>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.linear_model import LinearRegression\n",
    "\n",
    "def PolynomialRegression(degree):               #多项式回归\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"lin_reg\", LinearRegression())\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split          #分割\n",
    "np.random.seed(666)\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "167.94010867772357"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "poly_reg = PolynomialRegression(degree=20)             #多项式回归\n",
    "poly_reg.fit(X_train, y_train)\n",
    "y_poly_predict = poly_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y_poly_predict)             #167太大，过拟合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[-3, 3, 0, 6]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW0AAAD8CAYAAAC8TPVwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO2dd3gU5fbHvycFiLRQQkmoIhLpJZESbIACioiFq4heb/FykatiAYFrRUUQC1xsiMq9CooVUUFFEURBikBQ+g+QGpTQQksgIXl/f5xskt2d3Z2dndmd2T2f58mTZHdm591k58yZ7/s95yWlFARBEARnEBfpAQiCIAj6kaAtCILgICRoC4IgOAgJ2oIgCA5CgrYgCIKDkKAtCILgIHQFbSJKJqKPiWgrEW0hou5WD0wQBEHwJkHndv8B8LVS6iYiqgTgPAvHJAiCIPiAAhXXEFENAL8AOF9JJY4gCEJE0ZNpnw/gEID/ElEHAGsBjFRKna64ERENAzAMAKpWrdolPT3d7LEKgiD4JC+/CDl5BSipkFvGESEtOQnJ5yVGcGT6WLt27WGlVEqg7fRk2hkAVgLIUkqtIqL/ADihlHrU1z4ZGRlqzZo1wY5ZEATBMFmTFiMnr8Dr8bTkJCwf2ysCIwoOIlqrlMoItJ2eicj9APYrpVaV/v4xgM6hDE4QBMFsDmgEbH+PO5WAQVsp9QeAfUTUqvSh3gA2WzoqQRCEIElNTgrqcaei16d9D4B3iehXAB0BPGPdkARBEIJndN9WSEqMd3ssKTEeo/u28rGHM9Fl+VNKrQcQUGsRBEGIFIM6pQEAnlu4DQfyCpCanITRfVuVPR4t6PVpC4Ig2J5BndKiLkh7ImXsgiAIDkKCtiAIgoOQoC0IguAgJGgLgiA4CAnagiAIDkKCtiAIgoOQoC0IguAgxKctCDHOvOycqC9IiSYkaAtCDDMvOwfj5m5AQVExACAnrwDj5m4AAAncNkXkEUGIYZ5buK0sYLsoKCrGcwu3RWhEQiAkaAtCDBMr7UyjCQnaghDDxEo702hCgrYgxDCx0s40mpCJSEGIYWKlnWk0IUFbEGKcWGhnGk2IPCIIguAgJGgLgiA4CAnagiAIDkI0bUEQhDASatsACdqCEAGk30ds4q9tgF4kaAtCmJF+H7GLGW0DRNMWhDAj/T5iFKXQ57sPUf3saa+ngmkbIJm2IIQZ6fcROSIqS23bhvGLXkdBQmV82OEqt6dSk5OwW+fLSKYtCGFG+n2YyLFjQEmJrk1dslROXgEUymWpedk51o7RxdGjAIDUM3luDwfbNkCCtiCEGen3YRIrVwINGgDNmwMPPwxs3ep384jLUnkcrK9tEI+05CQQgLTkJEy8oZ24RwTBzki/DxM4eRK47Tagfn2gdWtg0iTgmWeAv/4VmDlTc5eIy1KlQbuFysfysb0Mv4yuoE1EuwGcBFAM4JxSKsPwEQVBkH4foXLffcBvvwFLlwKXXAL8/jvw5JPA9OnA7bcDV1zhtUtqchJyNAJ02GSpY8f4+8GDIb1MMPLIFUqpjhKwBUGIKHPncjY9diwHbABo2BB48UWgcWNg1ChNnTuQLDUvOwdZkxaj+dgFyJq02HytuzTTDmfQFgRBiCwHDgD/+AfQpQvwxBPuzyUlsUSybh3w3nteuw7qlIaJN7TT1JPDMknpCtq5uSG9DCmlAm9EtAvAMQAKwOtKqRn+ts/IyFBr1qwJaWCCIAhe3H8/8OqrwK+/Aq00Jm5LSoDMTODwYZ6YTNInfWRNWqwpnaQlJ4WkP7tx553AW2/xz4WFQGKi29NEtFaPkqE3085SSnUG0B/Av4joUs8NiGgYEa0hojWHDh3S+bKCIAg6KSkBPvoI6N9fO2ADQFwc8PzzwN69wLRpul86LJOUeRWsfiHESF1BWyl1oPR7LoBPAVyssc0MpVSGUiojJSXF8IAEQRA0WbkSyMkBBg/2v90VVwDXXstSSak3OhBh8c5XDNohSCQBgzYRVSWi6q6fAVwFYKPhIwqC4Agsn5gLlo8+AipX5oAciKefBk6c8Gn/8yQs3vljx4CaNfnnECYj9WTa9QEsI6JfAKwGsEAp9bXhIwqCYHsiXj3oSUkJ8PHHQN++QI0agbdv356dJdOn66qY9DdJaRp5eeWyTgiZdkCftlLqNwAdDB9BEATH4a96MJz+clevkPqb1mHu/v1YO2wUuujdecQIYMgQ4NtvOdgHwHLvfF4ekJUFrF5teaYtCEKMEfHqQbhn+1dvXYaz8QkYfqKR/mz/hhuAevXYbRJplOKg3aQJUKWKBG1BEMzFDk2tXNk+qRL03/YTfmzWCYfiq+jvFVKpEnu6588H9uyxdrAaVJwTuHL8fJZpatXiC4mVE5GCIMQedmhq5crqOx74P6SdPIQv03u6Pa6LYcP4+wy/pSWm4zkncDr3MAAg+4TifimSaQuCYCZhmZgLgCurv3rbMhTGJWDRBV3dHtdFkybsNnnzTeDsWSuGqYnnnECNM7zwwcc7T4UctKXLnyAImkS6qdXovq0wbu4GXLV9JZY164gTVaoZy/ZHjAA++wz45BPg1lutGawHnncDNc+cAgDsKq7E8si6dYZfWzJtQRBsyaBOaZjarRaa5v2BH5t3Np7t9+kDpKdzsU1xceDtXRw/Drz9NvD55xxkDx/Wvavn3UCN0iXGKtetzZl2bq7uxRs8kaAtCIJt6XuEJx0ff/FfWD62l7HMPy6Om0tt2gR8+KG+fYqLgeuvB/7yF+C667hBVUoK8N//6trdc07AJY8Muao9B+1z58pbtQaJBG1BEOzL0qVA7dpA27ahvc7gwUC7dsDjj3PADMRTTwFLlgAvv8y+6rlzgWbNgPff13U4zzmBJsR6+lVZ6SyPAIYdJBK0BUGwL99/D1x6KWfLoRAXx4skbN8OzJ7tf9vFi3nbP/+Z9fDMTM66b7yRx3PypK5DDuqUhuVje2HXpGswMqO0H1PNmpxpA4YnIyVoC4JgT/bt49VpLr/cnNdzyRzjx3NrVC0OHgSGDuVy81deAYjKnxswgPdbtCj4Y+flcfl9fLwEbUEQopSlS/n7ZZeZ83pELHvs3q3dSOrYMc6m8/JY+65Wzf35rCzOlBcsCP7YeXlAcjL/LPKIIAhRyfffcwVh+/bmvWa/fkCPHsC4cRy4XQ6OnTuB7t1Zv37nHda/PUlM5B4mCxYE7/w4dozfCwDUqcNyjWTagmA+tmtPGkuYpWdXhIiDcps2wN//zp0AZ80CunXjhQkWLfLfr3vAAOCPP4L3WVfMtOPi2IkiQVsQzMV27Uljif37Ofs1SxqpSIsWwA8/sH1v+3aecKxVixdZuNRrUS53+veHIsJbY18K7kJeMWgD5V5tA0jQFgQf+GtPKliMS882axLSk7g49mBv28YTjitWAC1bBtxt3r6zyE67CJmbfgruQl5RHgFCKmWXoC0IPrBDe9KYZelSzkzN1LO1qFWLbX116uja/LmF27Do/Ay0/2MHUk7xUma6LuSemXa9ehK0BcFs7NCeNGb5/nvWm+PjA25qFVrzGQfyCrC4RSYA4Iqda8q29XshP3eOvd0ijwiCtdihPWlMcuAAa81WSSM68DWfUTMpEVtTmiGnegr67Fxdtr3fC/nx4/zdUx7JzwdOnQp6bBK0BcEHdmhPGpP8+CN/DzQpaCG+5jOIgKRKCVjRtD06HmBJhMBB3eekpGsVdk95BDAkkURVa1bXenIH8gqQmpyE0X1bWX6CReKYQviIdHvSWGNedg7O/ed99E+sgv4Lj+GB+JyI/P19yR15+UWYcnNH5Kw5H/U2focaZ07hRBUuwnFl4wDcx6wVtF1Vkbm57GYJgqjJtCNhzxJLmCCYh+t8umjnr1iXmo69Jwsjdj75m88Y1CkN/xpxLQDg/KPuY9OclHR18/OURwBDmXbUBO1I2LPEEiYI5vHcwm1IOHUCF+XuwppGrQFE7nwKOJ+Rng4AaHFkv9e+Xlm6P3nEwGRk1MgjkbBniSVMEMzjQF4BLs3Zijgo/FwatF2PhxuXvOFT+mzeHEXxCbjgyD6vfb2ydNG0tUlNTkKOxj/XSntWJI4pCNFKanISMvZvxjmKQ3ZqutvjkcDvfEZCAgqano+Wx9zlEU13kStoV5RHKlXi32NZHomEPUssYYJgHqP7tkLXnM3Y2KAFCipVAWDv86lGx7boWpgb2F107Bj7zatWdX+8Xr3YlkcC3s5EyTEFIVrwdF491Ks5uhz8P3yUMQAE2P98uugiVP/8cyx/8BLuAOgLVzVkxd7cAFdhHjkS9GGjJmgDkbFniSVMEILH5RRxTeTn5BVgzmvzcN3Zs7jlgVtxyw3XRHiEOkhPB86dw6LPl+Px7SW+E7e8PHdpxEVCgqHFfaMqaAvBIR5zwR9Wfj60nFftdm/kH7KyTDmG5ZQ6SD57/zvktOgGwIdX+9gx90lIF0SGgrZuTZuI4okom4jmB30UwXaIx1zwh9WfDy1HSGbOZuyqlVruYbY7rVhrb5y71+1hL5uiZ7MoF0SAUkEfNpiJyJEAtgR9BMGWiMdc8IfVnw8vR4hSyNi/GZvOt7irn5lUr47fq9VBi6MBvNqRCNpE1AjANQDeDPoIgi0Rj7ngD6s/H57OqxZH96N2wQmkXtPHlNcPF/sbNNUssHG7KHn20nYRF2epPDIVwEMAfB6BiIYR0RoiWnPo0KGgByKEF2k7KvjD6s+HZzOuK49uBwB0HnqtKa8fLup0ac8FNhUyZi+bYrgzbSIaACBXKbXW33ZKqRlKqQylVEZKSkrQAxHCi3jMBX+E4/MxqFMalo/thSk3d0SHXRtw+LyayPpkn6PmVc6/JAPVCgvQIT5f26t95gx/mRi09bhHsgAMJKKrAVQBUIOIZiulbgv6aIJtEI+54M8dEq7Px7zsHIz75Fcs2b4WK5q0R87xM9qd8uyKy0HSpy7Qq5f381rVkC7i4qwJ2kqpcQDGAQARXQ5glARsZ6J1ki4fq/FBEyJCOC2YWj5pz2AZjhqE5xZuQ+ofe9Dg1FEsa9YRQPmEp5OCNrZu9R+0I2H5E5yNWPzsTbj/P3ZxDx3IK0DPPesBAMtLg7brcUeQmgpUrw5s8WGsCxS0Lbb8QSn1vVJqQNBHESKOXU5SQZtw/3/0ukO01kk0k9TkJPTcnY3dyQ2xv2Z9t8cdARFn21u3aj9vgTwimXaMIBY/exPu/48ed0g4sv+Hep2P7ns3YHmzDmWPOW5C3F/Qdi2AIPKIECxi8QuNcGScwTweKnrcIeHI/q87dwDVCguwuU1X567DmZ4O7N/PK657YoE8Ir1HYoTRfVu5TTwBDsxoIoSeSbtQCff/R487JCzZ/6JFABEmTLsXE2rXNu91A2DqpK9rMnLLFuDii92fk6AtGEUsfsbxl3Ga9feLVGthf68flkU+Fi0CunQBwhywTb0Id+rE39et8w7a+/YBNWoAVap472ewIlKCdgwhbWSNYVXGaXcLpuXZ/8mTwIoVwKhR5ryeTky/CDdrxr2xf/4ZGD7c/blVq4CMDO39wuEeEYRYxAq92QkWTM9Sc9P15h9+AM6dA/qEt9+I6RdhIiAzk4N2RQoKgF9/Bbp29b2fyCOCYD5WZJzhkFyCYts24O23gXnzgAsvBAYPBq691tq7s0WLWDYwuX92IL3aEtknIwP45hsgPx847zx+LDubL0qekokLsfwJgjVYkXHaxoK5ejXQvTtPpj37LNCwIWeMt93GaxgOHw4UFVlz7EWLgJ49tfVeg+i5g7Gkr0pmJuvT2dnlj61axd/9ZdqiaQuCNZidcYZlki8QP/0E9OvHzobnngOGDuWgXVLCWvM77wCvvw788QfwwQdA5cqaL2PIibFjB7BxI3DHHaa+JT13MJZM+rp0659/Lr9zWLUKaNyY/6ZaiDwiCM4h4hbMZcuA/v05oCxZAqRVCFhxcRx4srKA9u2Bu+8GBg4EPv20/Na/FMNOjFmzOGgNGWLq29J7B2O67JOayl9r1pQ/tmqV7ywbEHlEEJyE5ZN8/vjhB86w09KA7793D9ie/OtfwMyZLGX078+abQUMFeCUlHAW36eP/2OXEkxhU0SLyCpORubmArt3+w/aIo8IgrOIiAVz717guuv4tn3JEqBBg8D7/PWvQFIScOutwD33AG+9VfaUnszWUz6ZVPcoLtm9G3j66YCHDjaTj+gdTGYm8NlnXFCzejU/5msSEhDLnyAIATh3jnXr4mJg/nx9AdvFLbcADz/MWfc775Q9HCiz1ZoYzH35DRSdVxW4/vqAhw02k4/oHYxL1163Dli1CiXx8ej9/UnfdwiiaQuC4JcJE1jLnjULaNEi+P2feIL3v+suDlCtWwfMbD2DbpWiM7hqy49Y2O4yDPDQx7Uw4rKJWBFZhcnI3EU/4EjdpthZqiZp3iFYvEakIAgOxKUHD75tMorHP4l9V9/Adj4jxMcD773H/aMHDwZOnw6Y2XoG177/twLVCwsw+8LLdB3SUY3O6tQBzj8fWL0aSevXIrvBhW5Pe90hSKYtxCrhXPHFSbikicSTxzHli+exr2Z93NTmVjySnWP879OwIfDuu8CVV7KH+513/Ga2ntbGGzcuxr6a9bG/rY/Sbg8i7rIJlowM4IsvUP1MAbJTL/R62u0iJpq2EIs4oRw8UrikiUe/exMNTh7ByGtH4XBcldBbq/buzVLJ7Nns4/ZDxUKW+icPI2vPL/iiXS+M6n+RrkNFVKM2QmYml68DWN/Q+8Lidodg1RqRgmBnbFcObiMO5BWg147VGLxxEV7qfjN+SW1V9njIPPIIsHIlMHIkd+nLzNTcrGIhy91fzwFBoeWoEbgyiP+NoxqdleraRedVxYEGTYEKH02vOwSx/AnBEg2ygm3KwbVQigssTp3i9pzVq7PVrlq1sBy+VaUiTFz4MrakNMNLPW4pe9wUPTgujic0O3cGbrqJHRN16pQ97fnZerHSLnT9ZSHw0EO48rqeoR/frnTpAhAhsevFmHBTR//nl2jaQjCEo7F/OLBFObgWP/8MPPQQF69UpGZNYMwYzlB1uCdC4Y21s1A7/zj+duNjKExIBGCyHlynDvDxx9w/5OabudlUtWpen62ifftx4X8fQF56OyQ/9ZQ5x7Yr1asDI0YAWVmB7xCkIlIIhmhZ6NeS5j+hkJvLpdkXXwxs2gS89BLw44/AggXsvLjsMuDf/wZatgTeeMPQ7bEu5s1D4y/nYued9yIvvZ11enBmJuvaS5YA3boB27e7fbZIleCFBVNQpegs7rr6QaBSJfOObVdefllfeb7II0Iw2FpWCAJbrciTnw9ccw2wYQNrvqNHsyxSkSFDOIiPGQMMGwZ89RUXq5gpmezeDfztb0CnTkh/aRKWWx0o//IXoFEjLsDJzESb3vcgqVYqWhzZj8t2rcUle9ZjXN+7sTKxrrXjcBrRJo9Eg95qZ2wrKxjAFhNVxcXsf167lmWCgQN9b3vJJcDy5cC0acADDwA9enD5c/PmoY/j7Fn2UJeUAB99FL7Mtk8fbpZ0442YMde9PP3jtr0xp0NfpDnws2Up0eQeiRa91c7Yzf/qeZG+Ij0FS7Yecs5Fe8wY7oI3dapXwPaZgIwcCbRuzXpwZibrw5dfHto4HniAg+enn+qqejQ1OWrWDJ+//AHWPDkVxxOqYEedxthVOw35lZKQGEf29VZHimiSR8TGZT12khW0LtKzV+4te972F+3XXwdeeIGbKY0c6fZUwATkyiu5udDAgfzz9OnA3/9ubBzvvQe8+iqvuThoUMDNrUiOnl26Fzkd+ns9Xq1Kgj3/d5EkmuSRaNFbzcIqqcgWsgK0L9Ke2PaivWcPcP/9QN++wJQpXk/rSkAuuIAXHfjTn4A77+SlvyZO5LJxvXz+OQf7nj2BZ57RtYsVyZGvczQv36LVb5xMNFVEOqnfQDC9fo2+frRX/Om9GNvyov3gg/x9xgzNIKs7AalZkx0mI0bwKjKDBgG//65vDG+8wR3z2rUD5s4FEhN17WZFcuSkczfiWGX5I6IqRLSaiH4hok1ENN7QAIPAdjYuH4QjoEaLNc8fek9oK098Qxffb78FPvmEW5Y2aaK5SVBBLCGB7WIvvcSvnZ4OvPIKT3JqoRSXkw8bxosaLFkCpKQEHreRsenEKeeuLTCoaevJtM8C6KWU6gCgI4B+RNQt6CMFgVP6DYQjoMaCVKR1onti5Ylv6OJbWAjcey9P9rmybQ2CDmJEvLzXhg3s9b77bl549z//AZYuBY4fZ//3ww9zR7nx43mRgnnzgKpVg3rfVgRYp5y7tsAqTVsppQCcKv01sfQr+CMFiV30Vn+EI6BGkzXPF1qTouF0jxjSdqdNA7Zu5cUE/KwmbnjCt2VL4JtvgPffB8aOBe67z/35+Hi22T3zDPujiQK+T9PGpuN17X7u2gIrLX9EFA9gLYALALyilFqlsc0wAMMAoImPW8VoIxwB1W7WPKuI5Ike9MX34EHOcAcM4GKaABh+b66Fb4cM4RXR168HsrO5YOemm4D69YN/TbPG5gepsdCJhfIIlFLFSqmOABoBuJiI2mpsM0MplaGUykgJQldzMuHQ7+R203qC1nYnT+bqxxdesHBUHjRowLr1uHG82K4JAdsKYmHi3DTCYflTSuUR0fcA+gHYGPTRooxweZ3tcrsZrRlUUHczBw8Cr73Gay1e6N3kPtaRGosgsEoeIaIUAEWlATsJQB8AzwY/wujELgHVaqK5SjWoi+/zz3Op+COPhHmUziAWJs5Nw8KKyIYA3i7VteMAfKiUmh/0kQRHE+0ZlK6Lb24uVxwOGSJZtg9iYeLcNCx0j/wKoJORMQnRg2UZ1P79wHffcf/pzEwuEvHsjGcXXniBl5KSLNsnsTJxbgpOK2OPVn00WjE9g3rvPeCpp9g2BwCVK3MhyfDh3IfjvvvYnxwmAn4eDx/m8d1yCxe9CJrYqaeN7XFSl79o1kejFdMyqJISzlQnTuT19F54gf3Gbdvy0lzvvgt88AF3qZs1izvgWYyuz+OUKewYefRRy8fjdGJlnidkrLT8mU0slGZHG76shwD0l3+fPs3+4okTufT6p5+4lWj79px1dO/OZdzbt/MqKEOG8O8WE/DzmJfH47jxRuAifauIC0JAnCSPRGqGWSSZ0PDMoIK6YyooAHr14l7PU6ZwC1NfVXzJycDChRy077mHJwDHjzdU9aeHgJ/HV18FTpzgZcIEwSziSnNmpYL6bEckaDeqUQkzpg7D1KxbsbBVj7LHzZ5hrhikk89LxKkz51BUwlc2Q5KMUtz7eOZMXpT1ySd5Ic8gxxItFwzdjhKlWKtevZobLN1wQ+AXT0riRQH++U/Wvhs14uzcAvzq9fn5fJHp3x/oJPPxgom4AnWQQTsi8siYS5vgokO70W3fhrLHzJ5h9qzMOpZfVBawXeiWZJQC3nwT6NCBb9tnz+beE126cFlxkGOJliox3XdMr73G6yA+8YS+gO0iIYHbjvbty82Z1q0zPlg/+K1sffNNnoSULFswm4pBOwgiErQHtOYy95b5hy0rzdbTWB/QKcnMmQP84x/cp/j117nP8eLFrNF268Z6p58/fLRq+LrKv3/6iaWQa64xNokXF8cTknXr8tqHx48bHK1vfLYKaJPCva0vuYQXF4gAgVrGWt3P3Qh2HJMtqSiPBEFkLH+FhQCAnomnsWtS4IY7RtCrjweUZA4c4F4P3bvzKtquRveXXQb88gu3xbznHqBWLWDoUE0ZxGoNP1LSS0BHycGDPPHYtCkH3jiDOUJKCvDhh/w3/+tfWWIxWd/WdDzMnMk+8jfeMPVYegk0Z2BHF5Ydx2RbXJ/hIB0kkVm5pqh06aHduw3NnupBjz4eUJJRijPss2eB//3Pe2WSunW5j3HXrsB99+HLxRs0ZZCaSdoriZih4UdSevHbzMqlYx89yqup1KoV2sF69ACefZatgGFwlODcOWDSJNax+/a1/ngaBLpDs+MdnB3HZFsMyiORybRdQfvECbZThXpCa6CVBSbGE6pWSsDxgiJ9Gel//wt8+SU3oPdVthwfz5lY587A6FEouPJet6cLiopRJTEOSYnxllSJRbq83Kcnd84cvqBNnsyWPjO4/36WpcaM4Y53LVua87pazJrF1sO5c03N6oO5Kwp0h2bHPh92HJNtsXPQ9vygjr8wHn1cT+7ebUnQDrkya+9ersq7/HJePcQf7doBY8bg6gkTkNXyUixv1tHt6bz8Iky5uaMlEoaekyTs8snvv/PfrFs39mGbBRGvxdimDcskS5cGt/itXs6e5UnTzExdq5rrJVjpIFAVqh37fNhxTJFA1zlnUNO2XB7Run2ftnBz+Qa7d1t27EGd0rB8bC/smnQNlo/tFVygevxxvkWeOVOfFvvII9hbJw3PLHwZVYrOuD2VmpwU2lj8EGgyMOzyiUsWyc/nOxWzg2pqKq+huHw53wFZwYwZfNF+5hlTs+xgpYNA/drtuB6jHccUbnSfc3bVtLU+qMVnC8t/sTBoG2bvXrb13Xkn0Ly5vn2qVMHeiVPQNO8PjFjxUdnDVn9gA50kYdcY330X+PxzYMIE63p0DB0KXHcd2/BcvUvM4vRp4OmngSuuAHr39rmZEYdEsNJBoAUw7LhAhh3HFG50n3N2lUe0PpCVis+V/7Jnj9VDCB7XiiSjRgW1W89/DMb+T67DnUs+wztdrkXltIaWSxGeMlDyeYlQCrj/g/V4buE2zVtVwCKNMSeHnTTdu3uvaagD3TIOETB9Osskd9wBLFvGdkwzmDaNKzDnzfOZZRt1SBiRDgL18bBjnw87jimc6L4421Ue0fpAJpRUCNpmZNoFBRwwCkwIRIcO8cTi0KGAgbUuG02bjPPOFWJN4lpTZRB/uKSXKTd3xJmiEuQVFJXdlvm6uQ9FY9TMMpXiikVfThsdrxmUjNOgAQfu1au5MtUM8vJ44vTaa/12GDR69yLSQWyge/k6u8ojWh/UqlR6ZalePWDQ9nkbmpfHmVaVKlxS3qgRcOmlQHHgghq/TJsGnDnDDgUjXHghZ3+vvsoe3zCiFUwU4BW4QwkUvoLruideZKfNpEmGFggwFAgHDwb+8hfWnryWb2QAABSaSURBVH/8MehjejF6NDuannrK72ZGHRIiHcQGui/OdpVHtFwcwxo3Bt4Fn9w7dvjc1+9t6IbvgM2buTdF06bAkSMsa8ycyd5qI5w4wR7gQYOAiy4y7rp47DHWxCdM4BLuMOEraChwgDDDPaIVXGsd+R2tZj6mz2njA8NWsWnTOGDfdhsXOyUnGzo+vvqKS9bHjOF2BX4IxSER69JBLKDbuWbnikivD+oXX/D3li2BtWs5a9Y42fx6kFfO5ez6tdfKWxyuXs2TUzfdZMxGOGMGj2XcuNAqu5o14wvHjBnAQw/pn8wMEV/BJC05CcvH9jLlGJ5BlFQJnv1yGpRS+p02GhgOhNWr84IKWVnsWpkzJ3jHx7FjPOncpg13EwyArM4iBELXxdmu8ogmruKaCy7g7z4kEl9Z1rHcY9y68/rry984EWddR4/qOvG8KCjgTL13byAzM3TXxcMPc8MjI2MxSDg0U88get+yObhkz3q8fM1dIV2cQhr7xRfz3/mDD1iTDpaRI7nk/u23eQWdAIjMIZiCXeURTVxB26V97tkDdOzotZmv7Ov63A2sO3t2jOvYkTPcl1/m723a6B/T9OnAH39wjwuYUNmVmso9S6ZMAR58kAtwLGZQikK9+oeQ/eUy1D6wB3kNGqPtTf1wSSvzipcqZpl9t/2EkT/NwScdrkL6I/eH9LohF0ONGQNs2ACMHcvZ94gRAXeZl52DVS++hYmzZ2Fmr9tRO64B9JbSiMwhhIyjgnZpw6iyMmQfmbav29DhR3/hvh9andeefpozrpEjgW+/1XernJ/PfS169+aObjCpsuvf/2bJYNQovjOwio0b2WL33XfoAaAHANSuDfyyEFj4JnBXAi9A8NhjLCOEgCtQffz213hxwYvY1CgdidNfxcDOjUJ+GyEFwvh4bv96+jRfLKtVA/78Z5+bz8vOwdKnX8Gkz57HhvotMLHzDUiQxkZCOHFJiY6SRxo2BKpW9Rm0tW5DJ13bCo2XL+bFXxM0rjl16/Ls/3ffcd8IHWx8ZBJw8CAGN7iqzKHi63b9ivQU/UUVtWtzO9JvvgG+/lrXWILi6FGe+OvQgecGnnmGS7uPHOGvQ4d4/uDBB7nvd8+e3PxoxYqQDjuoaRJmz5+IqrVros3KRRjYrYVJbyhEEhP5Tql3by5zf/VVfLZ6t6Y9Meff4zFl7kT80rAlbr/5KRTFJ0pjIyG8GMy0SVnQZS8jI0OtWbPG9wavv86TRjk5wFVXccb96af6Xvzrr3kVkfnzuUezFufOcQOn48eBLVvYEuiDL37ajh5XZmJzSnPcfsvTADg4u9Y/rHi7fkV6Cj5Zm+OW+RPK3Rmat/OFhUDr1mxNXL9e+0JjhHXrgAEDWIsdPpw13bp1fW9/+jRP2k6ezMH85pu5V3TjxsEdd8cO9jHv3AksWRJy5m4Jp07xRX3JEuyp1RAvdb8Z81pfjvqnjqL9sb0Yl78JTb74CPPTL8GD19yPswmVynYlwLJ2wYLgxvTpwF13cfvnhg1BRGuVUhmBdotMpu2SRypVYqdFMAU2c+eyZumnxBgJCaxr793Li8j6Yc/TL6BO/nFM6Tm07LGKXfIq9gtZsvWQpg8a8FMMUqkSSy+bNnEvDjOYP5896YmJvObiK6/4D9gA39GMGgXs2sXNkD77DGjViu9K8vP1HXfpUm5Dm5vL0pMdAzbA0sh33+GhPz+FE5XOw/NfTsWWF2/E8ul/w2sfPIFG8z/GrMtuwT0DR7sFbCD2GhsJEcSuFZGauOSRxET2WOsN2sXFHGyuvpozV39ceilXNU6e7NsLfvw4bln6Pn5o1gnrGrmvsq014RhoEtLn7fUNN3CAe/RR4ORJ/+MOxMsvc9+N9HRg5crg1y2sWpWbYW3dyncqjz3G/4NHH+WJWC0OHeK/45VXAvXqsbXysstCex9WQ4SPGnbCtXdMxZ03PIq3Ow/Aw1eNwE1Dn0XHe+eg+pTnUaWSe+m72PaEsGLQ8hdZ90hiImfaeXksZdSs6X+/n37iLE/vOoOTJ3OQv//+cm+4i5Mngf79kXzmFJ6/9HavXbUyLl+TkxXRDOxEbCfs3p1dDe+8E7yXWClg3DjO2gcOZG9y1arBvUZFmjYFPvqI+3Y8/zwXAk2ezH2qmzdnD3zVqvx3++YbvmBefTUfN9D/ySa4/l+LWnbFopZdyx5PK+26CITgVhGEULGTe2TrHyfRfOwC3yeCpzwCYPHXq/Hornj/J9BXX7H00b+/voGkpnJWOXo0B6R77uFVvk+d4gC0ejXWTp6O7XmNAB2FElpuFq9D+rq97tqVdefHHmNf8T336HsPAGv0w4cDb73FFaCvvGJey9OePflrxw5udfrttzyJe/o0P9+0KRcIDRkSFtuimQQqghHbnhBRrKqIJKLGAN4B0ABACYAZSim/jYyLikvc+lIAHjYqV6YdH18WtD+euxw5zTMBf/utXQu0bcuatl7uvZd7YowZwxnl3Xfz6icrVgBz5qDr4MGYqLNcvWJ25mrGVPHPHfD2+uGHWYN+4AH2lJfaC/1y5gwHzHnzWMIYP9709REBcKHTSy/xz0pxSf+RI/z/Mbq2Y4SRbFqwNQblkYDuESJqCKChUmodEVUHsBbAIKXUZl/7VG7YUjW8Y2rZ715l1OPGsVxQWMh6ab16eKL3MPwvY6Db67jtpxRQrx72ZPXGrd2GBXcSKsWTaM8/DyxYwEFo9mwOhiFgqDfJ8eO8IsqJE3wRSvOz/aZN3Hxq7VrOgu+91/hxBUGwF//7H1tTf/sNaN5ct3skYKatlPodwO+lP58koi0A0gD4DNqeeOm8hYUsjQBA3brIT6yMRscPau7nClAle/dhxeHDeDO/VpmurLsfCBE3M7r8crYAHj/OS2GFiKHb65o12d7YtSsvVjthAnDrre7ZbHEx8OKLwCOPADVq8Paly17JateCECUY1LSDuu8lomYAOgFYpfHcMCJaQ0RrivOPuz3npfMWFZU3rSfCwVoN0OhErtfxaiYllrUBbXNwJwBgUz33Qo6gCyIuusiUgB0Sbdrw5F7dusDttwNduvBCslOnsmbdsSPryNdcw9l2hXUKZbVrQYgSDFZE6p6IJKJqAD4BcJ9S6oTn80qpGQBmACyPuB7X1HkrBm0ASS3PR5Ode902SUqMBxHKAlSbgztRAsKWet5NiRy50nOPHsDPPwPvv89at6vkunZtvrDMns0ZuId+LatdC0KUYKV7hIgSwQH7XaVUwNrwxPg4EODfPVKpvKihQZd2qLtuFRrVqIycE2fL9rv/g/Vl27Q9uBO/1U5DQSVvf7ZjCyLi4jgw33gj94Ju1gxISfE70eiE1a5FcxcEHVgVtImIALwFYItS6kU9L5reoDrWaJQCu07mB1ftQrf8YqzOzuGTuXVrJBTkY9nQlmwxK6XiGodtDu7E6sbeXfsI0F0QYdtgUrky2wB1YPdezqK5C4JOLKyIzAJwO4BeRLS+9OvqYMdXcZmqhJJinEFcedm3q4XqZve5TVfTptr5x5F68jA21nfXswnA0G5NdAWDoNcgtCl27+VsN83dyKrpghAWrKqIVEotg/cyg0FT8WROLD6HoviE8h4fw0p7aW/a5FY44wpES196FwCwp3Er1DovEXn5RUFnyn5XwbFJwNOLnYtC7KS5S9Yv2Bo7VURqUfGkTSg5h3NxCeWP167Nq2tv9nYRDuqUhkGt+E29MfUfxpYRg7FgYlROsa0MEwbspLlH04VaiELs3jCq4kmbWFyMotIy7LLHW7fmTFuLdeu4H4bBgO15fD2PG5VTokWGMUo4ljzTi52yfkCkGsEDu68RWfFkTiwpQlFcovvJ3KYNZ9paV53s7OC72fk5vgt/wcSoNhvrmq6dNPdgL9RWEusXc0EDu8sjFftAJBYXI75yovvJ3Lo1N3Lav9+9Mf+JE8D27VzObdLx9cgWRrM0O2V3kdJ07aK528lpI1KN4IXdgzZQ4WT+rDpQvTo6V/ywtm7N3zdtcg/a60u92iFm2m7H14FRbVY0Xfug90IdjjkIO13MBZtgdUWkqXgU1wBwt/3161f+eHY2f+/cOTxjK8Volman7E4CReALdbjuRux0MRdsQjh6j5iGRxk7AKBOHV4VxXMyct06XgC4QYPwjQ/GtVnRdJ1FuOYg7DRBK9gEJ8gjZWgFbaB8MrIia9aYIo0Ywag2K5qucwjX3Yj09ha8sGoRBEvQkkcA1rVnzeI3QcR69ubNwLBh4R9jFCCBIjDhlC3scjEXbILj1ojUyrRbt2a3SE4Or1E4YwYv4Hu79xqOgj4kUPhH7kaEiBE18gjA2XWtWtyedPBgrpgUBAuQuxEhYjhKHikq8i2PADwZuW8fr5j+z3+Gd2xRjNPL660av9yNCBHBUfJIYaF2pp2Swl+bNwO//spBvEeP8I8vCnF68ySnj18QvHC85c9F69bAF18Aq1dzlm3FyuMxiN3K64PF6eMXBC/s3jDKDV/yCMC69sGDMgFpMk4vtHH6+AXBC8fIIyUlvNq4v0wbAP70p5C6+gnuhGpti7QeLhWFQtThGHmkqIi/+wraWVmchd99d/jGFAOEUpFnhw510VBRKK1ZBTccY/lzBW1f8kjHjtztz1dQFwzhz9oWKIu2Q+Mpp1vzZCJV8MIxlr/CQv7uLyhLwLYELWubnmBiFz3ZydY8O1z4BJth90UQyggkjwhhRY8rQxpPhY5dLnyCjXCcpu1LHhHCip5gEg16cqSRC5/ghWMsf3rkESFs6Akmdmo361Tkwid44RjLn8gjtkJvwyQn68l2wOkTqYIFRI17xAIi7TG2MxJMwodc+AQ3oso9YiJitQqMBBNBiADiHtFGelYIgmBLHOceCVPQFquVIAi2xKqgTUQziSiXiDYaGpgnLnkkTJq2WK0EQbAlFlr+/gegX7Dj8UmYM22xWgmCYEussvwppX4gomYGhqRNmIO2uCMEQbAljrH8hVkeAcQdIQiCDYm05Y+IhgEYBgBNmjTxvaEU11iKeNIFwSFE2vKnlJqhlMpQSmWkpKT43lCCtmXYoe+1IAg6cYzlLwLySKwgnnRBcBBWuUeIaA6AFQBaEdF+Ivq7geGVI5m2ZYgnXRAchIXukSGGBuQLCdqWIesoCoKDEHnEPkRqLUDxpAuCg3CM5S/KM+1INqgST7ogOIhIW/504yNoG7Wq2c3iFum1AMWTLggOwXGLICSUH9podmrHtqsyGSgIgi4cpWknJpYPGMatana0uEmDKkEQdOGYNSKLirykEaPZqR2zWpkMFARBF5GuiNRNUZGXc8RodmrHrFYWwRUEQReOcY+45JEK6F1c1hOj+1mNTAYKghAQR7lHPIK2UauaWNwEQXAsjnKPaBTWGM1OJasVBMGROM49IgiCEMs4JmhryCOCIAgxh6Msf1Hcd0QQBEEXjrH8iTwiCIIg8oggCIKjEHlEEATBQTjG8ldYCFSvHvbDBsJu3QIFQYhyHFMRaUN5xI7dAgVBiHJEHjGOHbsFCoIQ5Yh7xDh27BYoCEKUI+4R49ixW6AgCFGOo4K2zeQR6YEtCELYcUyXPxvKI9ItUBCEsOMYy58N5RFAugUKghBmRB4RBEFwEI6x/NlQHhEEQQg7jrH82VQeEQRBCCuOkEdKSoDiYpFHBEEQrJRHiKgfEW0joh1ENDbowbkoKuLvkmkLghDrWCWPEFE8gFcA9AfQGsAQImod9AABCdqCIAguLJRHLgawQyn1m1KqEMD7AK4LcniMBG1BEATGYNAmFWAHIroJQD+l1J2lv98OoKtS6m6P7YYBGFb6a1sAG4MaiXOoC+BwpAdhIfL+nI28P+fSSikVsG+1nuIa0njMK9IrpWYAmAEARLRGKZWh47UdRzS/N0Den9OR9+dciGiNnu30yCP7ATSu8HsjAAeMDEoQBEEIDT1B+2cALYmoORFVAnALgM+tHZYgCIKgRUB5RCl1jojuBrAQQDyAmUqpTQF2m2HG4GxKNL83QN6f05H351x0vbeAE5GCIAiCfQh/GbsgCIJgGAnagiAIDsKSoE1ETxHRr0S0noi+IaJUK44TKYjoOSLaWvoePyWi5EiPyUyIaDARbSKiEiKKCnuVaa0YbAoRzSSiXCKKuvoIImpMREuIaEvp53JkpMdkJkRUhYhWE9Evpe9vvN/trdC0iaiGUupE6c/3AmitlBpu+oEiBBFdBWBx6STtswCglBoT4WGZBhFdBKAEwOsARimldPlH7UppK4b/A3Al2ML6M4AhSqnNER2YiRDRpQBOAXhHKdU20uMxEyJqCKChUmodEVUHsBbAoGj5/xERAaiqlDpFRIkAlgEYqZRaqbW9JZm2K2CXUhUaxThORin1jVLqXOmvK8He9ahBKbVFKbUt0uMwEfNaMdgUpdQPAI5GehxWoJT6XSm1rvTnkwC2AIiaZaYUc6r018TSL58x0zJNm4gmENE+AEMBPGbVcWzA3wB8FelBCH5JA7Cvwu/7EUUnfSxBRM0AdAKwKrIjMRciiiei9QByAXyrlPL5/gwHbSJaREQbNb6uAwCl1MNKqcYA3gVwt/9Xsx+B3l/pNg8DOAd+j45Cz/uLInS1YhDsDRFVA/AJgPs87uYdj1KqWCnVEXzXfjER+ZS4DC/sq5Tqo3PT9wAsAPC40WNFgkDvj4juADAAQG/lQLN7EP+/aEBaMTicUq33EwDvKqXmRno8VqGUyiOi7wH0g4+me1a5R1pW+HUggK1WHCdSEFE/AGMADFRK5Ud6PEJApBWDgymdqHsLwBal1IuRHo/ZEFGKy4FGREkA+sBPzLTKPfIJgFZgB8IeAMOVUjmmHyhCENEOAJUBHCl9aGWUuWOuB/ASgBQAeQDWK6X6RnZUoUFEVwOYivJWDBMiPCRTIaI5AC4Hty49COBxpdRbER2USRBRTwA/AtgAjikA8G+l1JeRG5V5EFF7AG+DP5txAD5USj3pc3sH3tkLgiDELFIRKQiC4CAkaAuCIDgICdqCIAgOQoK2IAiCg5CgLQiC4CAkaAuCIDgICdqCIAgO4v8BfyulcmYTlxwAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "y_plot = poly_reg.predict(X_plot)\n",
    "plt.scatter(x, y)\n",
    "plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "plt.axis([-3, 3, 0, 6])              #过度弯曲，两端太极端"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_model(model):                          #绘图封装\n",
    "    X_plot = np.linspace(-3, 3, 100).reshape(100, 1)\n",
    "    y_plot = model.predict(X_plot)\n",
    "    plt.scatter(x, y)\n",
    "    plt.plot(X_plot[:,0], y_plot, color='r')\n",
    "    plt.axis([-3, 3, 0, 6])\n",
    "    \n",
    "plot_model(poly_reg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用岭回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import Ridge              # ridge  岭\n",
    "def RidgeRegression(degree, alpha):                  # 管道方式  alpha 即为公式中1/2之前的alpha\n",
    "    return Pipeline([\n",
    "        (\"poly\", PolynomialFeatures(degree=degree)),\n",
    "        (\"std_scaler\", StandardScaler()),\n",
    "        (\"ridge_reg\", Ridge(alpha=alpha))\n",
    "    ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3233492754136291"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge1_reg = RidgeRegression(20, 0.0001)             #后一个参数是平方和，从小一点开始\n",
    "ridge1_reg.fit(X_train, y_train)\n",
    "y1_predict = ridge1_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y1_predict)               #均方误差，远小于167"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge1_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1888759304218461"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge2_reg = RidgeRegression(20, 1)\n",
    "ridge2_reg.fit(X_train, y_train)\n",
    "y2_predict = ridge2_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y2_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge2_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.3196456113086197"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge3_reg = RidgeRegression(20, 100)\n",
    "ridge3_reg.fit(X_train, y_train)\n",
    "y3_predict = ridge3_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y3_predict)                # 1.31 增加了，略微过头"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge3_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.8408455590998372"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridge4_reg = RidgeRegression(20, 10000000)\n",
    "ridge4_reg.fit(X_train, y_train)\n",
    "y4_predict = ridge4_reg.predict(X_test)\n",
    "mean_squared_error(y_test, y4_predict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_model(ridge4_reg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
